package com.example.designpattern.structural.adapter.object_based;

import java.util.concurrent.Callable;


/**
 * 这种接收对象同时实现目标接口的方式其实是一种基于对象的适配器模式，除此之外还有基于类的和基于接口的适配器模式
 */
// 2、实现目标接口
public class RunnableAdapter implements Runnable {

    private final Callable<?> callable;

    // 1、接收源对象
    public RunnableAdapter(Callable<?> callable) {
        this.callable = callable;
    }

    @Override
    public void run() {
        try {
            // 目标接口实现方法中调用源对象
            callable.call();
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 可以看到，在 RunnableAdapter 中，我们包装了原始的 Callable 接口，并实现了新的 Runnable 接口。
        // 在 Runnable 接口的 run 方法中，调用 Callable 接口的 call 方法。实现同样的业务功能。
    }
}

